/**
 *  点击节点 即可添加子节点.
 *  右击子节点 即可添加子节点.
 *  点击子节点 即可编辑.
 * 
 */

Ext.onReady(function() {

			var currentTab = Ext.getCmp('modulePanel').getActiveTab();

			var basicInfo = new Ext.form.FieldSet({
						title		: '基本信息',
						collapsible	: true,
						layout		: 'column',
						items		: [{
									columnWidth	: 0.5,
									layout		: 'form',
									defaults	: {
										xtype	: 'textfield',
										anchor	: '95%'
									},
									items		: [{
												fieldLabel	: '部门编号',
												emptyText	: '** ** ***',
												name		: 'deptId',
												allowBlank	: false
											}, {
												fieldLabel	: '传真',
												name		: 'fax'
											}, {
												fieldLabel	: '地址',
												name		: 'address'
											}]
								}, {
									columnWidth	: 0.5,
									layout		: 'form',
									defaults	: {
										xtype	: 'textfield',
										anchor	: '95%'
									},
									items		: [{
												fieldLabel	: '部门名称',
												name		: 'deptName',
												allowBlank	: false
											}, {
												fieldLabel	: '电话',
												name		: 'phone'
											}]
								}]
					});

			var extraInfo = new Ext.form.FieldSet({
						layout	: 'column',
						items	: [{
									columnWidth	: 0.33,
									layout		: 'form',
									defaults	: {
										anchor	: '95%'
									},
									items		: [{
												xtype		: 'textfield',
												fieldLabel	: '系统编号',
												name		: 'sysId'
											}, {
												xtype		: 'ux.displayfield',
												fieldLabel	: '制单人',
												value		: 'Admin',
												name		: 'createName'
											}]
								}, {
									columnWidth	: 0.33,
									layout		: 'form',
									defaults	: {
										anchor	: '95%'
									},
									items		: [{
												xtype		: 'ux.displayfield',
												fieldLabel	: '所属公司',
												value		: '南京分公司',
												name		: 'cmpName'
											}]
								}, {
									columnWidth	: 0.33,
									layout		: 'form',
									defaults	: {
										anchor	: '95%'
									},
									items		: [{
												xtype		: 'ux.displayfield',
												fieldLabel	: '所属部门',
												value		: '财务',
												name		: 'deptName'
											}]
								}]
					}
			);

			var fp = new Ext.FormPanel({
						frame				: true,
						bodyStyle			: 'padding: 10px',
						style				: 'margin: 5px',
						items				: [basicInfo, extraInfo],
						buttonAlign			: 'center',
						monitorValid		: true,
						trackResetOnLoad	: true,
						buttons				: [{
									text		: '保存',
									formBind	: true,
									handler		: saveHandler
								}, {
									text	: '重置',
									handler	: function() {
										form.reset();
									}
								}]
					})

			function resetForm(form) {
				form.items.each(function(f) {
							f.getXType() !== 'ux.displayfield'
									? f.setValue('')
									: null;
						});

				form.clearInvalid();
			}

			function saveHandler() {
				var currtNode = tp.getSelectionModel().getSelectedNode();

				var sysId = form.findField('sysId').getValue();
				if (sysId != '') {
					currtNode.setText(form.findField('deptName').getValue());
				}
				// no key, execute add action.
				else {
					if (currtNode != undefined) {
						var node = new Ext.tree.TreeNode({
									sysId	: new Date().format('Y-m-d:g:i:s'),
									deptId	: form.findField('deptId')
											.getValue(),
									text	: form.findField('deptName')
											.getValue(),
									leaf	: 1
								});

						currtNode.insertBefore(node, null);
					}
				}

				resetForm(form);
			}

			var form = fp.getForm();

			var panel = new Ext.Panel({
						region		: 'center',
						margins		: '-1 -1 -1 0',
						autoScroll	: true,
						height		: currentTab.getInnerHeight() * .4,
						items		: fp
					});

			var tp = new Ext.tree.TreePanel({
						region			: 'west',
						margins			: '-1 0 -1 -1',
						width			: 250,
						minSize			: 250,
						maxSize			: 250,
						lines			: false,
						enableDD		: true,
						useArrows		: true,
						autoScroll		: true,
						containerScroll	: true,
						split			: true,
						collapsible		: true,
						dataUrl			: '../../pages/dept/tree.json',
						root			: {
							nodeType	: 'async',
							text		: '企业应用平台'
						}
					});

			var treeEditor = new Ext.tree.TreeEditor(tp, {
						allowBlank		: false,
						blankText		: 'A name is required',
						selectOnFocus	: true
					});

			tp.on({
						'contextmenu'	: function(node, event) {
							event.preventDefault(); // 屏蔽浏览器右键菜单
							rightClick.showAt(event.getXY());// 取得鼠标点击坐标，展示菜单
							node.select();// 选中当前节点 一般为新节点的父节点
							node.expand();
						},
						'dblclick'		: function(node, event) {
							if (node.attributes.leaf) {
								treeEditor.editNode = node;
								treeEditor.startEdit(node.ui.textNode);
							}
						}
					});

			var sm = tp.getSelectionModel();
			sm.on({
						'selectionchange'	: function(sm, node) {
							if (node) {
								var rec = new Ext.data.Record({
											sysId		: node.attributes.sysId,
											deptId		: node.attributes.deptId,
											deptName	: node.attributes.text
										}
								);

								node.attributes.leaf
										? form.loadRecord(rec)
										: resetForm(form);
							}
						}
					}
			);

			new Ext.Panel({
						id			: 'p-dept',
						renderTo	: 'dept',
						layout		: 'border',
						border		: false,
						height		: currentTab.getInnerHeight(),
						items		: [tp, panel]
					});

			var itemAdd = new Ext.menu.Item({
						text	: '添加',
						iconCls	: 'drive-add',
						handler	: function() {
							resetForm(form);
						}
					});

			// var itemRename = new Ext.menu.Item({text : '重命名',iconCls : 'drive-edit',handler : function() {var node = tp.getSelectionModel().getSelectedNode();treeEditor.editNode =
			// node;treeEditor.startEdit(node.ui.textNode);}});

			var itemRemove = new Ext.menu.Item({
						text	: '删除',
						iconCls	: 'drive-delete',
						handler	: function() {
							var node = tp.getSelectionModel().getSelectedNode();
							Ext.Msg.confirm('信息', '确定要删除所选项吗?', function(btn) {
										if (btn == 'yes') {
											resetForm(form);
											node.remove(); // 移除节点
										}
									});
						}
					}
			);

			var itemRefresh = new Ext.menu.Item({
						text	: '刷新',
						iconCls	: 'arrow-refresh',
						handler	: function() {}
					});

			var rightClick = new Ext.menu.Menu({
						items	: [itemAdd, itemRemove, '-', itemRefresh]
					});
		}
);